library(tidyverse, warn.conflicts = F)
library(rvest)
library(plotly)
library(cluster)
library(ggdendro)
theme_set(theme_light())
source("plota_solucoes_hclust.R")

Analisando os tipos de filmes do Chris Evans(o Capitão America)

Para realizar minha análise usarei os dados do Rotten Tomatoes sobre os filmes do Chris Evans, nesse conjunto de dados temos as seguintes variáveis: o titulo de cada filme, sua nota no Rotten Tomatoes, o personagem interpretado pelo ator naquele filme, o lucro do filme(em milhões de dolares) e seu ano de lançamento, para minha análise utilizarei apenas os filmes: que Chris Evans participou como ator, que já tenham sido lançados e que tenham valores validos em suas variáveis(alguns filmes podem não ter certas variáveis).

from_page <- read_html("https://www.rottentomatoes.com/celebrity/Chris_Evans/") %>% 
    html_node("#filmographyTbl") %>% # A sintaxe da expressão é de um seletor à lá JQuery: https://rdrr.io/cran/rvest/man/html_nodes.html 
    html_table(fill=TRUE) %>% # Faz parse
    as.tibble()

filmes_chris_evans = from_page %>% 
    filter(RATING != "No Score Yet", 
           `BOX OFFICE` != "—", 
           CREDIT != "Executive Producer") %>%
    mutate(RATING = as.numeric(gsub("%", "", RATING)), 
           `BOX OFFICE` = as.numeric(gsub("[$|M]", "", `BOX OFFICE`))) %>% 
    filter(`BOX OFFICE` >= 1) # Tem dois filmes que não parecem ter sido lançados no mundo todo
## Warning in evalq(as.numeric(gsub("[$|M]", "", `BOX OFFICE`)),
## <environment>): NAs introduced by coercion

Análise inicial das Variáveis

Para análisar os tipo de filmes que Chris Evans fez utilizarei duas variáveis: sua nota no Rotten Tomatoes e o lucro do filme(em milhões de dolares), para ter uma ideia de como estão espalhados esses dados plotarei um gráfico abaixo com as duas variaveis.

names(filmes_chris_evans) <- c("Nota","Nome_Do_Filme","Papel","Lucro","ano")

plot_inicial = filmes_chris_evans %>% 
    ggplot(aes(x = Nota, y = Lucro, label = Nome_Do_Filme)) +
    labs(title = "Grafico da Nota X Lucro dos filmes do Chris Evans") + 
    xlab("Nota no Rotten Tomatoes") +
    ylab("Lucro do Filme(Em Milhões)") +
    geom_point()
ggplotly(plot_inicial)
## We recommend that you use the dev version of ggplot2 with `ggplotly()`
## Install it with: `devtools::install_github('hadley/ggplot2')`

Ao dar uma olhada no gráfico percebi que os altos valores de lucro de alguns de seus filmes atrapalham um pouco a visualização do gráfico, pois a maioria dos filmes acaba se concetrando embaixo do gráfico, para resolver esse problema passarei esses dados para uma escala logarítimica.

Análise em escala Logarítimica

plot_inicial = filmes_chris_evans %>% 
    ggplot(aes(x = Nota, y = Lucro, label = Nome_Do_Filme)) +
    labs(title = "Grafico da Nota X Lucro dos filmes do Chris Evans") + 
    xlab("Nota no Rotten Tomatoes") +
    ylab("Lucro do Filme(Em Milhões) - em escala logaritimica") +
    geom_point() +
    scale_y_log10()
ggplotly(plot_inicial)
## We recommend that you use the dev version of ggplot2 with `ggplotly()`
## Install it with: `devtools::install_github('hadley/ggplot2')`

Escolhendo o Número de Grupos

Agora olhando o gráfico acima pode se perceber melhor, que alguns pontos estão mais concetrados em grupos, para ter uma ideia de quantos grupos são formados por esses pontos vou usar o método da hierárquica aglomerativa, que vai me dar uma ideia de quantos grupos são formados pelos pontos sem perder a consistencia de grupo, para tanto vou plotar um gráfico de Número de Grupos produzido por Dissimilaridade na junção, onde as dissimilaridades nas junções tendem a ir aumentando caso haja estrutura de grupos.

agrupamento_h_2d = filmes_chris_evans %>% 
    column_to_rownames("Nome_Do_Filme") %>%
    select(Nota, Lucro) %>%
    dist(method = "euclidean") %>% 
    hclust(method = "centroid")

data.frame(k = NROW(agrupamento_h_2d$height):1, 
           height = agrupamento_h_2d$height) %>% 
    ggplot(aes(x = k, y = height)) + 
    geom_line(colour = "grey") + 
    geom_point() + 
    labs(x = "Número de Grupos produzido", y = "Dissimilaridade na junção")

Tipos De Filmes De Chris Evans

Assim olhando o gráfico, vejo que a partir de 5 grupos a Dissimilaridade na junção começa a crescer, dando uma ideia que os dados podem ser bem dividos em grupos a partir de 5 grupos, logo dividirei meus dados em 4 grupos para poder análisar melhor os tipo de filmes do Chris Evans.

Dividindo os filmes do Chris Evans em 4 tipos de filmes, temos o gráfico abaixo:

agrupamento_h_2d_com_scala = filmes_chris_evans %>% 
    column_to_rownames("Nome_Do_Filme") %>%
    select(Nota, Lucro) %>% 
    mutate(Lucro = log10(Lucro)) %>% 
    mutate_all(funs(scale)) %>% 
    dist(method = "euclidean") %>% 
    hclust(method = "centroid")
## Warning: Setting row names on a tibble is deprecated.
plot_tipo_filmes <- plota_hclusts_2d(agrupamento_h_2d_com_scala, 
                 filmes_chris_evans, 
                 c("Nota", "Lucro", "Nome_Do_Filme"), 
                 linkage_method = "centroid", k = 4) + scale_y_log10() +
                 xlab("Nota no Rotten Tomatoes") +
                 ylab("Lucro do Filme(Em Milhões) - em escala de log10")  +
                 labs(title = "Tipos de Filmes Do Chris Evans") + 
                 geom_point(size = 3.5)
ggplotly(plot_tipo_filmes)
## We recommend that you use the dev version of ggplot2 with `ggplotly()`
## Install it with: `devtools::install_github('hadley/ggplot2')`

Agora temos nossa divisão de filmes(finalmente) do Chris Evans, dividos em 4 gruposlhes darei os seguintes nomes de acordo com suas caracteristicas:

  1. Grupo(vermelho) dos meão, composto de filmes que tiveram um lucro razoável e não foram ruins de avaliação, um filme que está nesse grupo é Scott Pilgrim vs. the World(filme legal recomendo).
  2. Grupo(verde) do Capitão América, composto dos filmes em que Chris Evans faz o papel do Capitão América(tinha que ser mesmo), onde todos são bem avaliados e lucraram bastante(são o motivo do uso da escala logaritimica).
  3. Grupo(azul) dos Pobres Porém Bons, são filmes que o ator fez que menos lucraram, mas em compensação tem boa avaliação como Snowpiercer(filme muito bom recomendo) que tem a melhor avaliação dentre os filmes do ator.
  4. Grupo(roxo) dos Meia boca, são em maioria os filmes menos bem avaliados do ator mas que tiveram um lucro razoável, a maioria dos filmes do ator está nesse grupo, um filme que está nesse grupo é Not Another Teen Movie(filme bem meia boca).

Assim termino minha análise divindo os filmes do Capitão América(conhecido como Chris Evans) em 4 grupos cada um com características diferentes.